package com.sam;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;
import com.sam.entities.Admisor;
import com.sam.entities.Admisores;
import com.sam.rules.Rules;
import com.sam.utils.Utils;

public class BuscarAdmisor extends ActionSupport {

	private static final long serialVersionUID = -5350756038132585359L;

	private List<Admisor> admisores = new ArrayList<Admisor>();

	private Integer partido;
	private Integer localidad;
	private Integer profesion;
	private String direccionAfiliadoMaps;
	
	public void validate() {

	}

	public String execute() {
		admisores.clear();
		try {

			String uploadDir = ServletActionContext.getServletContext()
					.getRealPath("/files/" + Utils.getProperty("admisoresFile"));
			BufferedReader br = new BufferedReader(new FileReader(uploadDir));
			Gson gson = new Gson();
			Admisores obj = gson.fromJson(br, Admisores.class);
			for (int i = 0; i < obj.getAdmisor().size(); i++) {
				if ((partido.intValue() == 0 || partido.intValue() == obj
						.getAdmisor().get(i).getPartido())
						&& (localidad.intValue() == 0 || localidad.intValue() == obj
								.getAdmisor().get(i).getLocalidad())
						&& (profesion.intValue() == obj.getAdmisor().get(i)
								.getProfesion())) {
					admisores.add(obj.getAdmisor().get(i));
					// System.out.println(obj.getAdmisor().get(i).getNombre());
				}

			}

			admisores = new Rules().ejecutarReglas(admisores);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return SUCCESS;

	}

	public List<Admisor> getAdmisores() {
		return admisores;
	}

	public void setAdmisores(List<Admisor> admisores) {
		this.admisores = admisores;
	}

	public Integer getPartido() {
		return partido;
	}

	public void setPartido(Integer partido) {
		this.partido = partido;
	}

	public Integer getLocalidad() {
		return localidad;
	}

	public void setLocalidad(Integer localidad) {
		this.localidad = localidad;
	}

	public Integer getProfesion() {
		return profesion;
	}

	public void setProfesion(Integer profesion) {
		this.profesion = profesion;
	}

	public String getDireccionAfiliadoMaps() {
		return direccionAfiliadoMaps;
	}

	public void setDireccionAfiliadoMaps(String direccionAfiliadoMaps) {
		this.direccionAfiliadoMaps = direccionAfiliadoMaps;
	}

}
